<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="text/javascript">  
        // function A() { }
        // A.prototype.n = 1
        // var b = new A()
        // A.prototype = {
        //      n: 2,
        //      m: 3,
        //  }
        // var c = new A()
        //         console.log(b.n, b.m, c.n, c.m)//1 un 2 3
        // function Foo() {
        //     Object.prototype.a = function () {
        //         console.log('可访问a')
        //     }
        // }
        // Function.prototype.b = function () {
        //     console.log('可访问b')
        // }
        
        // var foo = new Foo()
        // console.log(foo);
        // a();//可访问a
        // b();//bc
        // Foo.a();//可访问a
        // Foo.b();//可访问b
        function Fun(){}
        var fun = function () { }
        // 原型的重写
        fun.prototype = {
            //可以手动添加构造器
            // constructor:fun,
            name: 'peter',
            age: 25
        }
        // fun.prototype.sex = '男';
        var a = new fun(); //
        // fun.prototype.title = '学生';
        // console.log(a.__proto__); //fun 
        var b = new fun();
        console.log(a.name, b.name); //peter. peter
        fun.prototype.name = 'jack';
        console.log(a.name, b.name); //jack jack
        //重写原型
        fun.prototype = {};
        fun.prototype.name = 'tom';
        console.log(a.name, b.name); //jack jack
        b.constructor.prototype.name = 'kitty'
        console.log(a.name,b.name);
        //a想要输出tom,b不改
        a.name = 'tom'
        console.log(a.name,b.name);
        //2.prototype,__proto__,constructor 有什么联系
        // __proto__对象上属性 ---->prototype 原型对象  所以可以说__proto__属性就是原型对象(prototype)，
        //原型对象本身也有__proto__，
        //指向Object.prototype，最后Object.prototype.__proto__指向了null。null是原型链的顶端。
        //constructor这个属性来讲，只有prototype对象才有。
     </script>
</body>
</html>